﻿/*----------------------------------------------------------------
           // Copyright (C) 2008 安华顺通(北京)科技有限公司
           // 版权所有。 
           //
           // 文件名：SynchronizeToDB.cs
           // 文件功能描述：执行同步到数据库的功能。
           //
           // 
           // 创建标识：杨波20080829
           //
           // 修改标识：
           // 修改描述：
           //
           // 修改标识：
           // 修改描述：
//----------------------------------------------------------------*/

#region UsingStatements

using System.Data;
using System.Data.SqlClient;

#endregion

namespace RuleCode.ObjectTree
{
    /// <summary>
    /// 执行同步到数据库功能的类。
    /// </summary>
    internal class SynchronizeToDB
    {
        /// <summary>
        /// 节点标签改变后，将新名称同步到数据库。
        /// </summary>
        /// <param name="node"></param>
        /// <param name="newName"></param>
        /// <param name="oldName"></param>
        public static void SynchronizeAfterLabelEdit(SysTreeNode node, string newName, string oldName)
        {
            SqlHelper sqlHelper = SqlHelper.Instance;
            const string spName = "sp_rename";
            SqlParameter[] parmas = new SqlParameter[3];
            parmas[0] = new SqlParameter();
            parmas[1] = new SqlParameter();
            parmas[2] = new SqlParameter();
            parmas[0].ParameterName = "@objname";
            parmas[1].ParameterName = "@newname";
            parmas[2].ParameterName = "@objtype";

            string nodeType = node.SysXmlNode.Attributes.GetNamedItem("Type").Value;
            switch (nodeType)
            {
                case OT.Table:
                    {
                        parmas[0].Value = oldName;
                        parmas[1].Value = newName;
                        sqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, spName, parmas);
                        break;
                    }
                case OT.TableField:
                    {
                        parmas[0].Value = node.Parent.Parent.Name + "." + oldName;
                        parmas[1].Value = newName;
                        parmas[2].Value = "COLUMN";
                        sqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, spName, parmas);
                        break;
                    }
            }
        }
    }
}